//
// Created by F1997 on 2024/12/24.
//

#include "FileUtils.h"

namespace ntp {
    /* 文件不存在时退出，存在时重命名 */
    void FileUtils::StaticRenameFile(const std::string& oldName){
        // 绝对路径转相对路径
        std::filesystem::path oldNameAbsolutePath = std::filesystem::absolute(oldName);
        std::cout << oldNameAbsolutePath.string();
        // 判断文件是否存在
        if (access(oldNameAbsolutePath.c_str(), 0) == -1) {  // access=确定文件是否存在或者判断读写执行权限
            std::cout << " 文件不存在，创建文件\n";
            std::ofstream file(oldNameAbsolutePath.c_str()); // 创建一个名为"example.txt"的文件
            if (!file.is_open()) {
                std::cerr << "无法打开文件，创建文件失败" << std::endl;
                return;
            }
            std::cout << "创建文件成功\n";
            return;
        }

        // 获取当前系统的时间点
        auto now = std::chrono::system_clock::now();
        // 将时间点转换为time_t以便进一步转换为本地时间
        std::time_t now_time = std::chrono::system_clock::to_time_t(now);
        // 转换为本地时间并格式化输出
        std::stringstream ss;
        ss << std::put_time(std::localtime(&now_time), "%Y%m%d_%H_%M_%S");
        std::string time_str = ss.str();
        std::string newName = oldNameAbsolutePath.string().erase(oldNameAbsolutePath.string().length()-4)
                              + "_" + time_str + ".csv";

        if (rename(oldNameAbsolutePath.c_str(), newName.c_str()) == 0) {
            std::cout << "重命名成功\n";
        }
        else {
            std::cout << "重命名失败\n";
        }
    }


} // ntp